# RUN: clangd -log=verbose -lit-test < %s | FileCheck -strict-whitespace %s
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}}
---
{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///main.cpp","languageId":"cpp","version":1,"text":"auto i = 0;"}}}
---
{
	"jsonrpc": "2.0",
	"id": 1,
	"method": "textDocument/codeAction",
	"params": {
		"textDocument": {
			"uri": "test:///main.cpp"
		},
        "range": {
            "start": {
                "line": 0,
                "character": 0
            },
            "end": {
                "line": 0,
                "character": 4
            }
        },
        "context": {
            "diagnostics": []
        }
    }
}
#      CHECK:  "id": 1,
# CHECK-NEXT:  "jsonrpc": "2.0",
# CHECK-NEXT:  "result": [
# CHECK-NEXT:    {
# CHECK-NEXT:      "arguments": [
# CHECK-NEXT:        {
# CHECK-NEXT:          "file": "file://{{.*}}/clangd-test/main.cpp",
# CHECK-NEXT:          "selection": {
# CHECK-NEXT:            "end": {
# CHECK-NEXT:              "character": 4,
# CHECK-NEXT:              "line": 0
# CHECK-NEXT:            },
# CHECK-NEXT:            "start": {
# CHECK-NEXT:              "character": 0,
# CHECK-NEXT:              "line": 0
# CHECK-NEXT:            }
# CHECK-NEXT:          },
# CHECK-NEXT:          "tweakID": "ExpandDeducedType"
# CHECK-NEXT:        }
# CHECK-NEXT:      ],
# CHECK-NEXT:      "command": "clangd.applyTweak",
# CHECK-NEXT:      "title": "Replace with deduced type"
# CHECK-NEXT:    }
# CHECK-NEXT:  ]
---
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "textDocument/codeAction",
  "params": {
    "textDocument": { "uri": "test:///main.cpp" },
        "range": {
            "start": {"line": 0, "character": 0},
            "end": {"line": 0, "character": 4}
        },
        "context": {
            "diagnostics": [],
            "only": ["quickfix"]
        }
    }
}
#      CHECK:  "id": 2,
# CHECK-NEXT:  "jsonrpc": "2.0",
# CHECK-NEXT:  "result": []
---
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "textDocument/codeAction",
  "params": {
    "textDocument": { "uri": "test:///main.cpp" },
        "range": {
            "start": {"line": 0, "character": 0},
            "end": {"line": 0, "character": 4}
        },
        "context": {
            "diagnostics": [],
            "only": ["refactor"]
        }
    }
}
#      CHECK:  "id": 3,
# CHECK-NEXT:  "jsonrpc": "2.0",
# CHECK-NEXT:  "result": [
# CHECK-NEXT:    {
---
{"jsonrpc":"2.0","id":4,"method":"workspace/executeCommand","params":{"command":"clangd.applyTweak","arguments":[{"file":"test:///main.cpp","selection":{"end":{"character":4,"line":0},"start":{"character":0,"line":0}},"tweakID":"ExpandDeducedType"}]}}
#      CHECK:    "newText": "int",
# CHECK-NEXT:    "range": {
# CHECK-NEXT:      "end": {
# CHECK-NEXT:        "character": 4,
# CHECK-NEXT:        "line": 0
# CHECK-NEXT:      },
# CHECK-NEXT:      "start": {
# CHECK-NEXT:        "character": 0,
# CHECK-NEXT:        "line": 0
# CHECK-NEXT:      }
# CHECK-NEXT:    }
---
{"jsonrpc":"2.0","id":5,"method":"shutdown"}
---
{"jsonrpc":"2.0","method":"exit"}
---
